﻿#define _CRT_SECURE_NO_WARNINGS
//编程常见错误归类
//1.编译型错误：一般都是语法错误
//2.链接型错误：
//3.运行型错误：


//函数递归：函数自己调用自己
//如果递归无限的递归下去就会出现栈溢出（Stack overflow)
//每一次函数调用都要为这次函数调用分配内存空间是内存的栈区上分配的
//如果无限的调用函数就会出现栈溢出的情况

#include<stdio.h>
//int main()
//{
//	printf("hehen");
//
//	main();
//
//	return 0;
//}


//求1!+2!+。。。。。n!的阶乘
//1!+2!+3!
//1+2+6
//int main()
//{
//	int n = 0;
//	int sum = 0;
//	int set = 1;
//	int i = 0;
//	scanf("%d", &n);
//	for (i = 1; i <= n; i++)
//	{
//		set = set * i;
//		sum = sum + set;
//	}
//	printf("%d\n", sum);
//	return 0;
//}

//计算n的阶乘（不考虑溢出），n的阶乘就是1~n的数字累积相乘。
//int fact(int n)
//{
//	if (n == 0)
//	{
//		return 1;
//	}
//	else if(n>0)
//	{
//		return n * fact(n - 1);
//	}
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int r = fact(n);
//	printf("%d ", r);
//	return 0;
//}


//输⼊⼀个整数m，按照顺序打印整数的每⼀位。
	//1234
	//1234%10=4
	//1234/10=123
	//123%10=3
	//123/10=12
	//12%10=2
	//12/10=1
//void print(int n)
//{
//	if (n > 9)
//	{
//		print(n / 10);
//	}
//	printf("%d ", n % 10);
//}
//int main()
//{
//
//	int n = 0;
//	scanf("%d", &n);
//	print(n);
//
//	return 0;
//}

////迭代的方式求n!
//int fact(int n)
//{
//	int i = 0;
//	int ret = 1;
//
//	for (i = 1; i <= n; i++)
//	{
//		ret = ret * i;
//
//	}
//	return ret;
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int r = fact(n);
//	printf("%d ", r);
//	return 0;
//}

//int fib(int n)
//{
//	if (n <= 2)
//		return 1;
//	else
//		return fib(n - 1) + fib(n - 2);
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int r = fib(n);
//	printf("%d\n", r);
//	return 0;
//}
//int count = 0;
//int fib(int n)
//{
//	int a = 1;
//	int b = 1;
//	int c = 1;
//	while (n > 2)
//	{
//		c = a + b;
//		a = b;
//		b = c;
//		n--;
//		///count++;
//	}
//	//printf("count=%d", count);
//	return c;
//	
//
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int r = fib(n);
//	printf("%d\n", r);
//	return 0;
//}

//void test(int n)
//{
//	printf("%d ", n);
//	if (n <= 10000)
//	{
//		test(n + 1);
//	}
//}
//
////栈溢出 
//int main()
//{
//	test(1);
//	return 0;
//}

//整数的三种表示方法
//原码 反码 补码
//正整数的三个码相同
//int main()
//{
//	int b = 10;
//	//000000000000000000000001010——原码
//	//000000000000000000000001010——反码
//	//000000000000000000000001010——补码
//	int a = -10;
//	//100000000000000000000001010——原码
//	//111111111111111111111110101——反码
//	//111111111111111111111110110——补码=反码+1
//
//
//	
//}

//整数在内存里面存的是补码


